// 解析 JWT 的函数
const parseJwt = (token) => {
	try {
		const payload = token.split('.')[1]; // 获取 JWT 的第二部分（Payload）
		const decoded = atob(payload); // Base64 解码
		return JSON.parse(decoded); // 转换为 JSON 对象
	} catch (error) {
		console.error('Token 解析失败:', error);
		return null;
	}
};

// 检查 Token 是否有效
const checkTokenValidity = () => {
	const token = uni.getStorageSync('token'); // 从 localStorage 获取 Token
	if (!token) {
		console.warn('未找到 Token');
		return false; // Token 不存在
	}

	const decoded = parseJwt(token); // 解析 Token
	if (!decoded) {
		console.warn('Token 解析失败');
		return false; // 解析失败
	}

	const currentTime = Math.floor(Date.now() / 1000); // 当前时间（秒）
	if (decoded.exp && decoded.exp < currentTime) {
		console.warn('Token 已过期');
		uni.removeStorageSync('token'); // 清除本地存储中的 Token
		uni.showToast({
			title: '登录已过期，请重新登录',
			icon: 'none',
		});
		uni.navigateTo({
			url: '/pages/login/login', // 跳转到登录页面
		});
		return false; // Token 过期
	}

	return true; // Token 有效
};

// 获取 Token 中的 ID
const getUserIdFromToken = () => {
	const token = uni.getStorageSync('token'); // 从本地存储获取 Token
	if (!token) {
		console.warn('未找到 Token');
		return null;
	}

	const parsedToken = parseJwt(token); // 解析 Token
	if (!parsedToken || !parsedToken.claims || !parsedToken.claims.id) {
		console.warn('Token 中未找到用户 ID');
		return null;
	}

	return parsedToken.claims.id; // 返回解析出的用户 ID
};

// 导出解析 ID 和检查 Token 的方法
export {
	getUserIdFromToken,
	checkTokenValidity
};
